package co.com.coomeva.adminEvaluacion.delegado;

import java.util.List;

import co.com.coomeva.adminEvaluacion.logica.CargoLogica;
import co.com.coomeva.adminEvaluacion.logica.DeptoLogica;
import co.com.coomeva.adminEvaluacion.logica.DivisionLogica;
import co.com.coomeva.adminEvaluacion.logica.EdColaboradorJefeLogica;
import co.com.coomeva.adminEvaluacion.logica.EvaRoleCargoLogica;
import co.com.coomeva.adminEvaluacion.modelo.entidades.Cargo;
import co.com.coomeva.adminEvaluacion.modelo.entidades.Depto;
import co.com.coomeva.adminEvaluacion.modelo.entidades.Division;
import co.com.coomeva.adminEvaluacion.modelo.entidades.EdColaboradorJefe;
import co.com.coomeva.adminEvaluacion.modelo.entidades.EvaRoleCargo;
import co.com.coomeva.adminEvaluacion.modelo.entidades.consulta.Consulta;
import co.com.coomeva.adminEvaluacion.modelo.entidades.EdPPeriodoEvaluacion;
import co.com.coomeva.adminEvaluacion.logica.EdPPeriodoEvaluacionLogica;

/*
 * Los Bean siempre se dirigen primero a esta clase
 */
public class DelegadoEdColaboradorJefe {
	public static EdColaboradorJefeLogica  logicaColaboradorJefe = null;	
	private static DelegadoEdColaboradorJefe delegado = null;
	
	public static DelegadoEdColaboradorJefe getInstance() {
		if(delegado == null){
			delegado = new DelegadoEdColaboradorJefe();
			logicaColaboradorJefe = EdColaboradorJefeLogica.getInstance();
		}
		return delegado;
	}

	public List<EdColaboradorJefe> consultarColaboradorJefe(String empCodigo, Long consPeriodo,Long empEmpresa, Long empCargo,String empCargoNombre, Long empGrado, Long empDivision, String empDivisionNombre, Long empDepto,String empDeptoNombre, Long empArea,String empAreaNombre, String jefeCodigo, Long jefeCargo,String jefeCargoNombre, Long jefeGrado, Long jefeDivision, Long jefeDepto, Long jefeArea, Long rolCodigo) throws Exception {
		return logicaColaboradorJefe.consultarColaboradorJefe(empCodigo, consPeriodo,empEmpresa, empCargo, empCargoNombre, empGrado, empDivision, empDivisionNombre, empDepto, empDeptoNombre, empArea, empAreaNombre, jefeCodigo, jefeCargo, jefeCargoNombre, jefeGrado, jefeDivision, jefeDepto, jefeArea, rolCodigo);
	}
	

	
	public void crearEdColaboradorJefe(String empCodigo, Long consPeriodo,Long empEmpresa, Long empCargo,String empCargoNombre, Long empGrado, Long empDivision, String empDivisionNombre, Long empDepto,String empDeptoNombre, Long empArea,String empAreaNombre, String jefeCodigo, Long jefeCargo,String jefeCargoNombre, Long jefeGrado, Long jefeDivision, Long jefeDepto, Long jefeArea, Long rolCodigo) throws Exception {
		logicaColaboradorJefe.crearEdColaboradorJefe(empCodigo, consPeriodo,empEmpresa, empCargo, empCargoNombre, empGrado, empDivision, empDivisionNombre, empDepto, empDeptoNombre, empArea, empAreaNombre, jefeCodigo, jefeCargo, jefeCargoNombre, jefeGrado, jefeDivision, jefeDepto, jefeArea, rolCodigo);
	}
	
	
	public List<Consulta> consultarColaboradorJefe2(String empCodigo, Long consPeriodo, Long empCargo,Long empDivision,String jefeCodigo) throws Exception {
		// TODO Auto-generated method stub
		return logicaColaboradorJefe.consultarColaboradorJefe2(empCodigo, consPeriodo, empCargo,empDivision,jefeCodigo);
	}
	
	public List<Consulta> consultarColaboradorJefeXEmpCodigo(String empCodigo) throws Exception {
		// TODO Auto-generated method stub
		return logicaColaboradorJefe.consultarColaboradorJefeXEmpCodigo(empCodigo);
	}
	public EdColaboradorJefe consultarColaboradorJefePorID(String empCodigo, Long consPeriodo) throws Exception {
		return logicaColaboradorJefe.consultarColaboradorJefePorID(empCodigo, consPeriodo);
	}
	
	
	public void actualizarEdColaboradorJefe(String empCodigo, Long consPeriodo,Long empEmpresa, Long empCargo,String empCargoNombre, Long empGrado, Long empDivision, String empDivisionNombre, Long empDepto,String empDeptoNombre, Long empArea,String empAreaNombre, String jefeCodigo, Long jefeCargo,String jefeCargoNombre, Long jefeGrado, Long jefeDivision, Long jefeDepto, Long jefeArea, Long rolCodigo,  Long consAccion, String descripcion, String usuarioRed, String fecha, Long divisionGerenCodigo) throws Exception {
		logicaColaboradorJefe.actualizarEdColaboradorJefe(empCodigo, consPeriodo,empEmpresa, empCargo, empCargoNombre, empGrado, empDivision, empDivisionNombre, empDepto, empDeptoNombre, empArea, empAreaNombre, jefeCodigo, jefeCargo, jefeCargoNombre, jefeGrado, jefeDivision, jefeDepto, jefeArea, rolCodigo,consAccion, descripcion,usuarioRed,fecha,divisionGerenCodigo);
	}
	
	
	public String consultarNombreCargo(Long empCargo) throws Exception {
		return logicaColaboradorJefe.consultarNombreCargo(empCargo);
	}
	
	
	public List<Consulta> cargarEmpleado(String empCodigo, boolean bJefe) throws Exception {
		// TODO Auto-generated method stub
		return logicaColaboradorJefe.cargarEmpleado(empCodigo, bJefe);
	}
	
	/**
	 * Metodo que realiza el llamado al metodo que permite consultar las ciudades
	 * @return Lista del tipo Division con las ciudades consultadas
	 * @throws Exception
	 */
	public List<Division> consultarCiudades(Long gerenciaCodigo) throws Exception {
		DivisionLogica objDivisionLogica = DivisionLogica.getInstance();	
		return objDivisionLogica.consultarCiudades(null, gerenciaCodigo, null, null, null, null);
	}
	
	public List<Depto> consultarDeptos(Long codCiudad, Long gerenciaCodigo) throws Exception {
		DeptoLogica objDeptoLogica = DeptoLogica.getInstance();	
	
		
		Long codCity = null;
		if(codCiudad != null && !codCiudad.equals("-1")){
			codCity = new Long(codCiudad);

			//System.out.println("codCar = " + codCar);
			objDeptoLogica = DeptoLogica.getInstance();
			return objDeptoLogica.consultarDeptoXCiudad(codCity, gerenciaCodigo);
		}
		else
			return null;
	
		
}
	

public void eliminarRelacion(String empCodigo, Long consPeriodo,Long empEmpresa, Long empCargo,String empCargoNombre, Long empGrado, Long empDivision, String empDivisionNombre, Long empDepto,String empDeptoNombre, Long empArea,String empAreaNombre, String jefeCodigo, Long jefeCargo,String jefeCargoNombre, Long jefeGrado, Long jefeDivision, Long jefeDepto, Long jefeArea, Long rolCodigo) throws Exception {
	logicaColaboradorJefe.eliminarRelacion(empCodigo, consPeriodo,empEmpresa, empCargo, empCargoNombre, empGrado, empDivision, empDivisionNombre, empDepto, empDeptoNombre, empArea, empAreaNombre, jefeCodigo, jefeCargo, jefeCargoNombre, jefeGrado, jefeDivision, jefeDepto, jefeArea, rolCodigo);
}
	
	/**
	 * @return
	 * @throws Exception
	 */
	/*
	public List<EdPPeriodoEvaluacion> consultarPeriodos() throws Exception {
		EdPPeriodoEvaluacionLogica objPeriodoEvaluacion = EdPPeriodoEvaluacionLogica.getInstance();	
		return objPeriodoEvaluacion.consultarPeriodoEval(null, null, null, null, null, null, null);
	}
	*/
	
	/**
	 * @param codPeriodo
	 * @param strRutaArchivo
	 * @return
	 * @throws Exception
	 */
	public void cargarArchivo(long codPeriodo, String strRutaArchivo, String usuarioRed) throws Exception{
		logicaColaboradorJefe.cargarArchivo(codPeriodo, strRutaArchivo, usuarioRed);
	}	
	
	/**
	 * Metodo que realiza el llamado al metodo que permite consultar los cargos
	 * @return Lista del tipo EvaRoleCargo con los cargos consultados
	 * @throws Exception
	 */
	public List<Cargo> consultarCargos(Long gerenciaCodigo, Long unidadNegocio) throws Exception {
		CargoLogica objCargoLogica = CargoLogica.getInstance();
		return objCargoLogica.consultarCargos(null, null, gerenciaCodigo, unidadNegocio);
	}
	
	public List<EvaRoleCargo> consultarRolesXCargo(String codCargo) throws Exception {
		EvaRoleCargoLogica objEvaRoleCargoLogica;

		Long codCar = null;
		if(codCargo != null && !codCargo.equals("-1")){
			codCar = new Long(codCargo);

			//System.out.println("codCar = " + codCar);
			objEvaRoleCargoLogica = EvaRoleCargoLogica.getInstance();
			return objEvaRoleCargoLogica.consultarRolesXCargo(codCar, null, null);
		}
		else
			return null;
	}
	

}
